package com.amado.course24;

/**
 * 类型转换
 * 
 * @author Administrator
 *
 */
public class TypeConvert {
	public static void main(String[] args) {
		/**
		 * 继承下的类变量赋值：
		 * <p>
		 * 1.子类变量赋值给父类变量，自动完成。称为向上转型,可以用父类的值接收子类对象，但是子类对象中的方法、属性不能调用
		 */
		Father father = new Son("张三");
		//能调用对象那些方法，以当前对象的申请类型为准
		father.getId();
		
		//即可以调用父的方法，也可以调用自身的方法
		Son son = new Son("张三");

		// 所有的类对象都可以用Object接受
		Object obj = new Father();
		Object obj2 = new Son();

		/**
		 * 2.父类变量赋值给子类变量，强制完成。称为向下转型 类型强制转换，父类转换为子类（前提是这个对象必须是通过子类生成，否则会报java.lang.ClassCastException）
		 */
		//(Son) 强制转换为Son类型
		Son mySon = (Son) father;
		System.out.println(mySon.getName());
		
		//父类对象强制转换为子类对象（如果这个对象不是通过子类对象生成的）
		Father father1 = new Father();
		System.out.println("-----------------------");
		System.out.println((Son) father1);
	}
}
